Aide:InfoboxBuilder
InfoboxBuilder est un module Lua qui simplifie grandement la création d'infoboxes. De plus, il rend l'affichage des pages l'utilisant plus rapide que celles utilisant des infoboxes avec le traditionnel wikitexte. Plus les infoboxes sont complexes et plus l'amélioration du temps d'affichage est flagrante. Bien que n'importe quelle communauté peut tirer avantage de l'utilisation de Lua, vous devriez considérer l'utilisation de InfoboxBuilder si vos infoboxes contiennent des modèles imbriqués. Comme il utilise Lua, un langage de programmation à part entière, InfoboxBuilder vous permet de créer des infoboxes aussi complexes que vous le souhaitez — basées sur un noyau simplifié, standardisé. Peu importe où vous êtes sur Fandom, vous reconnaitrez les « tripes » des infoboxes en Lua, mais nous ne serez pas esclave de sa simplicité. InfoboxBuilder vous apporte une façon simple de créer des infoboxes, sans perdre la possibilité de vous les approprier complètement. De quoi ai-je besoin ? Une fois que Lua est activé sur votre wiki, vous pouvez y aller. InfoboxBuilder est maintenant une fonction parseur et est activé automatiquement. Créer une infobox simple Si vous souhaitez créer une infobox simple, c'est très facile. Le code source de celle à droite est : InfoboxBuilder vient avec un thème par défaut conçu pour rendre bien sur n'importe quel fond. Syntaxe InfoboxBuilder utilise une nouvelle syntaxe qui se veut simple, bien que descriptive. Le motif général pour chaque argument est | Indice:Clé = Valeur. Chaque champ de l'infobox doit avoir un indice numérique qui définit sa place dans l'infobox et associe les arguments. Les clés basiques sont Type et Value. Vous pouvez utiliser les types suivants : * Title : titre * Header : en-tête * Line : ligne * Image * MainImage : image principale * Footer : pied * Custom : personnalisé * Split : bloc sur deux colonnes avec des en-têtes optionnelles Line et Custom nécessitent l'utilisation d'un argument ayant pour clé Label : * Pour Line, il définit l'en-tête de la ligne * Pour Custom, il défini la balise HTML que vous souhaitez utiliser comme conteneur (par exemple div, span Vous pouvez aussi utiliser Label pour définir les légendes des champs de type Image et MainImage. Pour Split, les clés suivantes sont nécessaires : * ValueLeft : valeur dans la colonne de gauche * ValueRight : valeur dans la colonne de droite * LabelLeft : en-tête de la colonne de gauche (facultatif) * LabelRight : en-tête de la colonne de droite (facultatif) Personnaliser une infobox Variables Il a plusieurs façons de modifier l'apparence ou le comportement de votre infobox en utilisant des arguments variables. Ils ont tous l'indice 0. Ceux par défaut sont : | 0:Theme = default, -- Ajoute un préfixe aux classes CSS -- (préfixe que vous vous voulez utiliser) | 0:CustomModule = , -- Définit le chemin vers un module Lua contenant des fonctions personnalisées -- (nom d'un module avec le préfixe Module:) | 0:MainImageCaption = Off, -- Active/désactive l'affichage de la légende (Label) pour le champ de type MainImage -- (Off/On) | 0:ToggleContentLongerThan = 1000 -- Rend les champs avec de grandes valeurs enroulables -- (nombre de caractères) Pour les surcharger, placez les simplement dans la source de votre infobox avec une valeur différente : Vous pouvez aussi définir vos propres variables. Par exemple, si vous voulez utiliser le mot magique ajoutez : | 0:Pagename = Le nom de l'article utilisant cette infobox sera maintenant transmis pour une utilisation ultérieure. Style Tout cela n'en vaudrait pas la peine si vous ne pouviez pas appliquer des styles sur votre toute nouvelle infobox. Chaque élément de l'infobox a un nom de classe spécifique avec un préfixe indiqué dans la variable Theme (par exemple, si le préfixe est default un conteneur div aura la classe nommée default-infobox-container). Nous recommandons de mettre tout le code CSS dans MediaWiki:Common.css. Vous pouvez utiliser le InfoboxBuilder fonctionne bien pour des infoboxes simples, mais la vraie magie opère avec les infoboxes complexes qui utilisent beaucoup de logique. Le point le plus important ici est que vous pouvez inclure votre propre module Lua qui gère la logique. Mais chaque chose en son temps. Étape 1 - Fournir les données Dans cet exemple, nous utiliserons ce code wikitexte : Cela appelle le modèle LuaInfobox et transmet certaines informations au module InfoboxBuilder. Vous pouvez trouver le code du modèle ici. Étape 2 - Modèle infobox En premier, nous créerons un modèle pour mettre en forme notre infobox. Pour être consistent avec les données de l'étape 1, appelons-le « Modèle:LuaInfobox ». Nous utiliserons aussi le thème mon-theme de Common.css. Pour utiliser un module personnalisé, nous devons mettre son nom dans la variable CustomModule. } | 2:Type = MainImage | 2:Label = Logo du module ou logo de Lua | 2:Value = } | 3:Type = Header | 3:Label = Basic info | 3:Value = Informations basiques | 4:Type = Line | 4:Label = Nom du module | 4:Value = } | 5:Type = Line | 5:Label = Dépendances | 5:Value = } | 5:ValueDesc = } | 5:ValueMethod = Dependencies | 6:Type = Line | 6:Label = Version | 6:Value = } }} Étape 3 - Modules personnalisés CustomModule = Module:LuaInfobox Code du module personnalisé local HF = require('Module:HF') local LuaInfobox = {} function LuaInfobox.Dependencies( field, vars ) local output = "" local dependencies = HF.explode( ";", field.Value ) for i, dependency in ipairs( dependencies ) do output = output .. "" .. dependency .. "" .. "; " end if string.sub( output, -2, -1 ) "; " then output = string.sub( output, 1, -3 ) -- Remove last semi-colon and space end return output end return LuaInfobox Chaque méthode récupère deux arguments — tableau de champs avec les noms des clés correspondant à celles du modèle (par exemple Type, Label, Value) et un tableau similaire de variables (par exemple Theme, Pagename). Comme vous pouvez le voir vous pouvez invoquer d'autres modules Lua, vous n'avez donc pas besoin de tout placer au même endroit. Faites toutefois attention, le moteur de Lua a une limite de 100 modules inclus en une fois. Utilisation dans un modèle Nous devons maintenant ordonner à InfoboxBuilder d'utiliser cette méthode pour un champ Dependency et cela se fait en ajoutant un argument ValueMethod avec un nom de fonction : | 5:Type = Line | 5:Value = } | 5:ValueMethod = Dependencies Il n'y aucune convention de nommage à respecter, toutefois utiliser un nom de module pour une variable principale et des noms de champ pour les fonctions vous aidera à maintenir les choses organisées. Vous pouvez aussi traiter Label de la même façon. Ajoutez simplement la clé LabelMethod avec le nom de la fonction que vous souhaitez utiliser. Valeurs multiples Puisque chaque méthode a accès à toutes les clés groupées en un champ, vous pouvez passer plusieurs valeurs. Par exemple, nous souhaitez indiquer que toutes les dépendances sont nécessaires. Il est possible de le faire en ajoutant un nouvel argument au champ Dependencies : | 5:Type = Line | 5:Label = Dépendances | 5:Value = } | 5:ValueDesc = } | 5:ValueMethod = Dependencies et définir sa valeur dans un modèle : | Dependencies = InfoboxBuilderView; HF | DependenciesDesc = (toutes les dépendances nécessaires) Nous pouvons maintenant l'utiliser pour ajouter des notes complémentaires pour le champ Dependencies function LuaInfobox.Dependencies( field, vars ) local output = "" local dependencies = HF.explode( ";", field.Value ) for i, dependency in ipairs( dependencies ) do output = output .. "" .. dependency .. "" .. "; " end if string.sub( output, -2, -1 ) "; " then output = string.sub( output, 1, -3 ) -- Remove last semi-colon and space end if not HF.isempty( field.ValueDesc ) then output = output .. " " .. field.ValueDesc end return output end Voir aussi * Billet d'annonce * Lua templating/InfoboxBuilder sur le Fandom Developers Wiki Catégorie:Aide Catégorie:Scripts personnalisés